<!DOCTYPE HTML>
<html>
<head>
<title>Archived Changes</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="static/theme.css" rel="stylesheet" type="text/css" />
<script src="static/content.js" type="text/javascript"></script>
</head>

<body>
<h1>Archived Changes</h1>
<p>This document contains a history of changes made within the original branch of AutoHotkey development, by Chris Mallett.</p>
<p>For newer changes, see <a href="AHKL_ChangeLog.htm">Changes &amp; New Features</a>.</p>
<h2 id="v1.0.48.05">1.0.48.05 - September 25, 2009</h2>
<p>Fixed crash of <a href="commands/PostMessage.htm">SendMessage and PostMessage</a> when wParam or lParam is omitted (broken by 1.0.48.04). [thanks Lexikos]</p>
<h2 id="v1.0.48.04">1.0.48.04 - September 25, 2009</h2>
<p>Fixed <a href="commands/StringSplit.htm">StringSplit</a> to work properly inside <a href="Functions.htm">functions</a> of <a href="Scripts.htm#ahk2exe">compiled scripts</a> (broken by 1.0.35.01). [thanks engunneer &amp; Lexikos]</p>
<p>Fixed <a href="commands/Send.htm#SendPlayDetail">SendPlay</a> not to wait for the release of the Windows key prior to sending an &quot;L&quot; keystroke (broken by 1.0.48.01). [thanks Lexikos]</p>
<p>Fixed <a href="Variables.htm#EndChar">A_EndChar</a> to be valid when the <a href="Hotstrings.htm#b0">B0 option</a> is present, and to be empty when there is no <a href="Hotstrings.htm#EndChars">ending character</a> (broken by 1.0.44.09). [thanks Al2000]</p>
<p>Fixed <a href="commands/FormatTime.htm">FormatTime</a> to yield a valid time of day even when the specified month is out-of-range (broken by 1.0.48.00). [thanks silveredge78]</p>
<p>Fixed <a href="commands/FileCreateDir.htm">FileCreateDir</a> to support a leading backslash even when it is the only backslash; e.g. \dir. [thanks jaco0646]</p>
<p>Fixed <a href="commands/GuiControl.htm">GuiControl</a>/<a href="commands/GuiControlGet.htm">GuiControlGet</a>/<a href="commands/Gui.htm">Gui</a>/<a href="commands/PostMessage.htm">SendMessage</a> to work reliably even when they trigger a <a href="commands/RegisterCallback.htm">callback</a> or <a href="commands/OnMessage.htm">OnMessage</a> function. [thanks Lexikos]</p>
<p>Fixed <a href="commands/RegExMatch.htm">RegExMatch()</a> not to produce too few replacements when an empty-string match is followed by a non-empty-string match.</p>
<p>Changed <code>While()</code> to be recognized as a <a href="commands/While.htm">loop</a> rather than a <a href="Functions.htm">function</a>. [thanks Crash&amp;Burn]</p>
<p>Improved <a href="commands/URLDownloadToFile.htm">UrlDownloadToFile</a> to support FTP and Gopher. [thanks Lexikos]</p>
<p>Improved the <a href="commands/FileAppend.htm#stdout">stdout/asterisk mode</a> of FileAppend to write immediately rather than lazily to standard output. [thanks Lexikos]</p>
<p>Added full support for <code>if % expression</code>. [thanks kenomby]</p>
<h2 id="v1.0.48.03">1.0.48.03 - May 3, 2009</h2>
<p>Fixed <code><a href="commands/ListLines.htm">ListLines On</a></code> not to erase the most recent log entry in the line history. [thanks Lexikos]</p>
<p>Fixed <a href="commands/ListView.htm">ListView</a> to respond properly to mouse dragging when <a href="commands/SetTimer.htm">timers</a> are running. [thanks Solar]</p>
<p>Fixed <a href="Hotkeys.htm#keyup">key-up hotkeys</a> so that if one is created while its key is being held down, the release of the key doesn't trigger the wrong hotkey. [thanks Peter &amp; engunneer]</p>
<h2 id="v1.0.48.02">1.0.48.02 - April 19, 2009</h2>
<p>Changed and fixed <a href="commands/Gosub.htm">Gosub</a> and <a href="commands/GroupActivate.htm">GroupActivate</a> so that when a function calls an <a href="Functions.htm#GosubPublic">external/public subroutine</a>, that subroutine will treat all dynamic variables as globals, and will have outside-of-function GUI behavior. [thanks kenomby &amp; Lexikos]</p>
<p>Improved performance of <a href="Variables.htm#True">True</a>/<a href="Variables.htm#False">False</a>/<a href="Variables.htm#EventInfo">A_EventInfo</a> in <a href="Variables.htm#Expressions">expressions</a> by treating them as integers vs. strings.</p>
<h2 id="v1.0.48.01">1.0.48.01 - April 15, 2009</h2>
<p>Changed: For Windows Vista and later, hotkeys that include the Windows key (e.g. #a) will wait for LWin and RWin to be released before sending any text containing an &quot;L&quot; keystroke. This prevents such a hotkey from locking the PC. This behavior applies to all sending modes except <a href="commands/Send.htm#SendPlayDetail">SendPlay</a> (which doesn't need it) and <a href="commands/Send.htm#blind">blind mode</a>.</p>
<p>Fixed <a href="commands/LoopFile.htm#LoopFileExt">A_LoopFileExt</a> to be blank for any filename having no extension but a period in its pathname. [thanks Yek-Toho-Tua].</p>
<p>Fixed the <a href="Variables.htm#AssignOp">assignment</a> of integers that are 19 or 20 characters long to work as they did prior to v1.0.48. [thanks Laszlo &amp; Lexikos]</p>
<p>Fixed <a href="Functions.htm#define">function definitions</a> to work properly inside a <a href="commands/Block.htm">block</a>. [thanks rmarko]</p>
<p>Improved performance of <a href="Variables.htm#Index">A_Index</a> in <a href="Variables.htm#Expressions">expressions</a> by treating it as an integer rather than a string.</p>
<p>Improved performance of <code><a href="commands/IfIn.htm">if var [not] in/contains</a></code>. [developed by Lexikos]</p>
<p>Improved <a href="commands/ListLines.htm">ListLines</a> with an option to turn line-logging Off or On. [thanks kenomby &amp; ruespe]</p>
<h2 id="v1.0.48.00">1.0.48 - February 25, 2009</h2>
<p><strong>Compatibility:</strong> The change most likely to affect backward compatibility is that floating point numbers stored in variables now have higher precision. Scripts that rely on tiny differences in precision would either need to be reviewed and updated, or have their compatibility improved by using <code><a href="commands/SetFormat.htm">SetFormat Float</a></code> (e.g. <code>SetFormat, Float, 0.6</code>) <em>anywhere</em> in the script. <code>SetFormat Float</code> disables the higher precision, but gives up some of the new, faster floating point performance.</p>
<p><strong>Performance:</strong> The main theme of this release is faster performance. Almost all scripts should run faster -- especially those that make heavy use of <a href="Variables.htm#Expressions">expressions</a> and integer math/comparisons (which may run up to three times as fast). To achieve the full benefit, a script either should avoid using SetFormat or should use <a href="commands/SetFormat.htm#Fast">SetFormat's fast mode</a>.</p>
<h3>Performance improvements</h3>
<p><a href="Variables.htm#Expressions">Expressions</a> and <a href="Functions.htm">function calls</a> are compiled more heavily, making them much faster (especially complex integer expressions, including those with <a href="Variables.htm#comma">commas</a>).</p>
<p>Binary numbers are cached for variables to avoid conversions to/from strings. This makes numerical operations involving variables much faster.</p>
<p>Literal integers in expressions and math/comparison commands are replaced with binary integers, which makes them faster; e.g. <code>X+5</code> and <code>if x &gt; 5</code>.</p>
<p><a href="commands/Loop.htm">LOOPs</a>, <a href="commands/IfExpression.htm">IFs</a>, and <a href="commands/Else.htm">ELSEs</a> that have blocks (braces) are faster due to skipping the opening '{'. A side-effect is that the '{' is omitted from <a href="commands/ListLines.htm">ListLines</a>.</p>
<p><a href="misc/Threads.htm">Thread-creation</a> performance is improved, which should help rapid-fire threads in <a href="commands/OnMessage.htm">OnMessage()</a>, <a href="commands/RegisterCallback.htm">RegisterCallback()</a>, and <a href="commands/Gui.htm#Events">GUI events</a>.</p>
<h3>Changes that might affect existing scripts (other than higher-precision floating point described at the top)</h3>
<p>When <code><a href="commands/SetFormat.htm#Integer">SetFormat, Integer, Hex</a></code> is in effect, assigning a literal decimal integer to a variable also converts it to hex. Usually this is only a display issue.</p>
<p>For <a href="commands/OnMessage.htm">OnMessage()</a> performance, the message number and HWND arrive as standard numbers rather than appearing unconditionally as hex. Usually this is only a display issue.</p>
<p>To achieve various improvements in performance, scripts now use slightly more memory (proportionate to the number of variables and expressions).</p>
<p>Changed and fixed <code><a href="commands/IfIs.htm#time">if var is time</a></code> and other uses of YYYYMMDDHHMISS date-time stamps to recognize that months outside the range 1-12 are invalid. [thanks Nick]</p>
<p>Changed and improved <a href="Functions.htm#DynCall">dynamic function calling</a> to allow passing more parameters than defined by a function, in which case the parameters are evaluated but discarded. [developed by Lexikos]</p>
<h3>Other improvements</h3>
<p>Added function <a href="commands/IsFunc.htm">IsFunc()</a>, which indicates whether a function may be <a href="Functions.htm#DynCall">called dynamically</a>. [developed by Lexikos]</p>
<p>Added the <a href="commands/While.htm">while-loop</a>, which repeats its commands until its <a href="Variables.htm#Expressions">expression</a> evaluates to false. [developed by Lexikos]</p>
<p>Added an <a href="Functions.htm#AssumeStatic">assume-static mode</a> for functions. [developed by Lexikos]</p>
<p>Added built-in variables <a href="Variables.htm#IsPaused">A_IsPaused</a> and <a href="Variables.htm#IsCritical">A_IsCritical</a>. [developed by Lexikos]</p>
<p>Improved <a href="commands/NumPut.htm">NumPut()</a> to support UInt64 like <a href="commands/DllCall.htm#unsigned">DllCall()</a>. [thanks Sean]</p>
<p>Improved mouse wheel support by adding <a href="Hotkeys.htm#Wheel">WheelLeft and WheelRight</a> as hotkeys and supporting them in <a href="commands/Send.htm">Send</a>, <a href="commands/Click.htm">Click</a>, and related commands. However, WheelLeft/Right has no effect on operating systems older than Windows Vista. [developed by Lexikos]</p>
<p>Upgraded <a href="Scripts.htm#ahk2exe">compiled script</a> compressor from UPX 3.00 to 3.03.</p>
<h3>Fixes</h3>
<p>Fixed inability to use <a href="commands/MsgBox.htm#Timeout">MsgBox</a>'s timeout parameter when the &quot;Text&quot; parameter had an expression containing commas.</p>
<p>Fixed <code><a href="commands/Menu.htm#Delete">Menu, Delete, Item-that's-a-submenu</a></code> not to disrupt the associated submenu. [thanks animeaime &amp; Lexikos]</p>
<p>Fixed the <a href="commands/GuiControls.htm#Hotkey">GUI Hotkey control</a> to return usable hotkey names even for dead keys (e.g. &quot;^&quot; instead of Zircumflex). [thanks DerRaphael]</p>
<p>Fixed <a href="commands/RegDelete.htm">RegDelete</a> so that it won't delete an entire root key when SubKey is blank. [thanks Icarus]</p>
<p>Fixed <a href="commands/LoopReg.htm">registry loops</a> to support subkey names longer than 259 (rare). In prior versions, such subkeys would either be skipped or cause a crash. [thanks Krzysztof Sliwinski &amp; Eggi]</p>
<p>Fixed FileSelectFolder by providing <a href="commands/FileSelectFolder.htm#NewDialog">an option</a> to make it compatible with BartPE/WinPE. [thanks markreflex]</p>
<p>Fixed <a href="misc/WinTitle.htm#ahk_id">window/control IDs (HWNDs)</a>, which in rare cases wrongly started with 0xFFFFFFFF instead of just 0x. [thanks Micahs]</p>
<p>Fixed inability of <a href="commands/Send.htm">Send commands</a> to use the Down/Up modifiers with the &quot;}&quot; character. [thanks neovars]</p>
<h2 id="v1.0.47.06">1.0.47.06 - March 9, 2008</h2>
<p>Fixed crash when a <a href="Functions.htm">function</a> was called concurrently with an optional <a href="Functions.htm#ByRef">ByRef parameter</a> omitted by one <a href="misc/Threads.htm">thread</a> but not omitted by the other. [thanks DeathByNukes]</p>
<p>Fixed <code><a href="commands/Menu.htm#MainWindow">Menu, Tray, MainWindow</a></code> to enable the menu items in the main window's View menu. [thanks Lexikos]</p>
<p>Added <a href="Functions.htm#DynCall">dynamic function calling</a>. [developed by Lexikos]</p>
<h2 id="v1.0.47.05">1.0.47.05 - November 21, 2007</h2>
<p>Fixed the <a href="commands/Sort.htm">Sort command</a>: 1) fixed the <a href="commands/Sort.htm#callback">&quot;function&quot; option</a> not to misbehave when it's the last option in the list; 2) fixed the <a href="commands/Sort.htm#unique">&quot;unique&quot; option</a> so that when the delimiter is CRLF, the last item can be detected as a duplicate even when it doesn't end in CRLF; 3) fixed the &quot;unique&quot; option not to append a trailing delimiter when the last item is a duplicate. [thanks Roland]</p>
<p>Fixed <a href="commands/RegExMatch.htm">RegExMatch()</a> and <a href="commands/RegExReplace.htm">RegExReplace()</a> to yield correct results even when Haystack and OutputVar are both the same variable. [thanks Superfraggle]</p>
<p>Fixed inability to pass a parameter that is &quot;a variable to which <a href="misc/Clipboard.htm#ClipboardAll">ClipboardAll</a> has been assigned&quot;. [thanks Joy2DWorld &amp; Lexikos]</p>
<p>Updated RegEx/PCRE from 7.0 to 7.4. For a summary of the major changes, see <a href="http://www.pcre.org/news.txt">www.pcre.org/news.txt</a>. For full details of every change and fix, see <a href="http://www.pcre.org/changelog.txt">www.pcre.org/changelog.txt</a>.</p>
<p>Added GUI control &quot;<a href="commands/GuiControls.htm#Tab2">Tab2</a>&quot; that fixes rare redrawing problems in the original &quot;Tab&quot; control (e.g. activating a GUI window by clicking on a control's scrollbar). The original Tab control is retained for backward compatibility because &quot;Tab2&quot; puts its tab control after its contained controls in the tab-key navigation order. [thanks Xander]</p>
<h2 id="v1.0.47.04">1.0.47.04 - August 28, 2007</h2>
<p>Fixed <a href="Hotkeys.htm#keyup">key-up hotkeys</a> like <code>a up::</code> not to block the pressing of the &quot;a&quot; key unless the hotkey's <a href="commands/_IfWinActive.htm">#IfWin criteria</a> are met. [thanks Roland]</p>
<p>Fixed <code><a href="commands/Math.htm#Round">Round(Var, NegativeNumber)</a></code>, which in rare cases was off by 1. [thanks Icarus]</p>
<p>Fixed crash of scripts that end in a syntax error consisting of an orphaned IF-statement (broken by 1.0.47.00). [thanks msgbox of the German forum]</p>
<p>Eliminated the &quot;GetClipboardData&quot; error dialog. Instead, an empty string is retrieved when the data cannot be accessed within the <a href="commands/_ClipboardTimeout.htm">#ClipboardTimeout</a> period. [thanks ManaUser &amp; Sean]</p>
<p>Changed GUI <a href="commands/GuiControls.htm#Checkbox">checkboxes</a> and <a href="commands/GuiControls.htm#Radio">radio buttons</a> to default to <a href="commands/Gui.htm#Wrap">&quot;no word-wrap&quot;</a> when no width, height, or CR/LF characters are specified. This solves display issues under certain unusual DPI settings. [thanks Boskoop]</p>
<h2 id="v1.0.47.03">1.0.47.03 - August 1, 2007</h2>
<p>Fixed <a href="Variables.htm#Expressions">expressions</a> to allow literal negative hexadecimal numbers that end in &quot;E&quot;; e.g. fn(-0xe). [thanks Laszlo]</p>
<p>Fixed <a href="commands/Block.htm">block syntax</a> to allow a <a href="Functions.htm">function-call</a> immediately to the right of a '}'. [thanks Roland]</p>
<h2 id="v1.0.47.02">1.0.47.02 - July 19, 2007</h2>
<p>Fixed the <a href="commands/GuiControls.htm#EditNum">Number option</a> of Edit controls to properly display a balloon tip when the user types something other than a digit. [thanks tfcahm]</p>
<p>Fixed WM_TIMER not to be blocked unless it's posted to the script's main window. [thanks tfcahm]</p>
<p>Fixed <a href="Hotkeys.htm#wildcard">wildcard hotkeys</a> not to acquire <a href="Hotkeys.htm#Tilde">tilde behavior</a> when the same hotkey exists in the script with a tilde. [thanks Lexikos]</p>
<p>Fixed <a href="Functions.htm#DeclareInit">declaration initializers</a> not to retain whitespace at the end of literal numbers. Also, they now allow spaces between a closing quote and the next comma. [thanks Hardeep]</p>
<h2 id="v1.0.47.01">1.0.47.01 - July 8, 2007</h2>
<p>Fixed <a href="commands/RunAs.htm">RunAs</a> not to crash or misbehave when a domain is specified. [thanks Markus Frohnmaier]</p>
<p>Changed <a href="Variables.htm#Operators">relational operators</a> to yield integers even when the inputs are floating point; e.g. <code>1.0 &lt; 2.0</code> yields 1 vs. 1.0. [thanks Lexikos]</p>
<h2 id="v1.0.47.00">1.0.47 - June 19, 2007</h2>
<p>Added support for <a href="Functions.htm#lib">function libraries</a>, which allow a script to call a function in an external file without having to use <a href="commands/_Include.htm">#Include</a>.</p>
<p>Added <a href="commands/RegisterCallback.htm">RegisterCallback()</a>, which creates a machine-code address that when called, redirects the call to a function in the script. [developed by Jonathan Rennison (JGR)]</p>
<p>Added <a href="commands/NumGet.htm">NumGet()</a> and <a href="commands/NumPut.htm">NumPut()</a>, which retrieve/store binary numbers with much greater speed than Extract/InsertInteger.</p>
<p>Improved <a href="commands/Sort.htm#callback">Sort</a> with an option to do custom sorting according to the criteria in a callback function. [thanks Laszlo]</p>
<p>Improved <a href="commands/OnMessage.htm">OnMessage()</a> with an option to allow more than one simultaneous <a href="misc/Threads.htm">thread</a>. [thanks JGR]</p>
<p>Improved Critical with an option to change the <a href="commands/Critical.htm#Interval">message-check interval</a>, which may improve reliability for some usages. [thanks Majkinetor and JGR]</p>
<p>Changed <a href="commands/Critical.htm">Critical</a> to put <a href="commands/SetBatchLines.htm">SetBatchLines -1</a> into effect.</p>
<p>Changed the error messages produced by <a href="commands/_ErrorStdOut.htm">#ErrorStdOut</a> to contain a space before the colon. [thanks Toralf]</p>
<p>Fixed <a href="commands/OnMessage.htm">OnMessage() functions</a> that return one of their own local variables to return the number in that variable, not 0.</p>
<p>Fixed potential crashing of built-in variables that access the registry (e.g. A_AppData, A_Desktop, A_MyDocuments, A_ProgramFiles). [thanks Tekl]</p>
<h2 id="v1.0.46.17">1.0.46.17 - May 31, 2007</h2>
<p>Fixed <a href="Variables.htm#UserName">A_UserName</a> (broken by 1.0.46.16).</p>
<h2 id="v1.0.46.16">1.0.46.16 - May 30, 2007</h2>
<p>Fixed <code><a href="commands/GuiControls.htm#Tab">Gui, Tab, TabName</a></code> when used after a previous <code>Gui Tab</code>. [thanks Toralf]</p>
<p>Improved SetTimer to treat <a href="commands/SetTimer.htm#once">negative periods</a> as &quot;run only once&quot;. [thanks Majkinetor]</p>
<p>Added <code><a href="commands/GuiControlGet.htm#Hwnd">GuiControlGet Hwnd</a></code>, which is a more modular/dynamic way to retrieve a control's HWND. [thanks Majkinetor]</p>
<p>Added built-in variables <a href="Variables.htm#ThisLabel">A_ThisLabel</a> and <a href="Variables.htm#ThisFunc">A_ThisFunc</a>, which contain the names of the currently-executing label/function. [thanks Titan &amp; Majkinetor]</p>
<h2 id="v1.0.46.15">1.0.46.15 - May 9, 2007</h2>
<p>Fixed <a href="commands/GuiControl.htm">GuiControl</a>, <a href="commands/GuiControlGet.htm">GuiControlGet</a>, and <code>Gui <a href="commands/ListView.htm#GuiLV">ListView</a>/<a href="commands/TreeView.htm#GuiTV">TreeView</a></code> to support <a href="Functions.htm#static">static variables</a> and <a href="Functions.htm#ByRef">ByRefs</a> that point to globals/statics. [thanks Peter]</p>
<p>Fixed <a href="commands/FileInstall.htm">FileInstall</a> causing the <a href="commands/Random.htm">Random</a> command to become non-random in <a href="Scripts.htm#ahk2exe">compiled scripts</a>. [thanks Velocity]</p>
<p>Reduced the size of <a href="Scripts.htm#ahk2exe">compiled scripts</a> by about 16 KB due to UPX 3.0. [thanks to atnbueno for discovering the optimal command-line switches]</p>
<h2 id="v1.0.46.14">1.0.46.14 - May 2, 2007</h2>
<p>Added the &quot;require administrator&quot; flag to the installer to avoid a warning dialog on Windows Vista. [thanks Roussi Nikolov]</p>
<h2 id="v1.0.46.13">1.0.46.13 - May 1, 2007</h2>
<p>Fixed <a href="Hotkeys.htm">hotkeys</a> like <strong>*x</strong> to fire even when <strong>x</strong> is also a hotkey that is prevented from firing due to <a href="commands/_IfWinActive.htm">#IfWin</a>. [thanks Joy2DWorld &amp; Engunneer]</p>
<p>Improved <a href="Functions.htm#optional">optional parameters</a> to accept quoted/literal strings as default values.</p>
<p>Improved <a href="Functions.htm#ByRef">ByRef parameters</a> with the ability to be <a href="Functions.htm#optional">optional</a> (i.e. they may accept default values). [thanks Corrupt]</p>
<h2 id="v1.0.46.12">1.0.46.12 - April 24, 2007</h2>
<p>Fixed inability to recognize a literal scientific notation number that begins with 0, such as 0.15e+1. [thanks Laszlo]</p>
<h2 id="v1.0.46.11">1.0.46.11 - April 23, 2007</h2>
<p>Fixed inability to have a <a href="Functions.htm">function-call</a> as the first item in certain <a href="Variables.htm#comma">comma-separated expressions</a>. [thanks Majkinetor]</p>
<p>Fixed WinTitles like <code>ahk_id %ControlHwnd%</code> in <a href="commands/ControlGet.htm">ControlGet</a>'s FindString/Choice/List, and <a href="commands/Control.htm">Control</a>'s Add/Delete/Choose. [thanks Freighter &amp; PhiLho]</p>
<p>Improved floating point support to recognize scientific notation; e.g. 1.2e-5 (the decimal point is mandatory). Also improved &quot;<a href="commands/SetFormat.htm#sci">SetFormat Float</a>&quot; with an option to output in scientific notation. [thanks Laszlo]</p>
<h2 id="v1.0.46.10">1.0.46.10 - March 22, 2007</h2>
<p>Fixed <a href="commands/StringSplit.htm">StringSplit</a> inside assume-local <a href="Functions.htm">functions</a> so that it creates a local <a href="misc/Arrays.htm">array</a> even when OutputArray0 exists as a global but not a local. [thanks KZ]</p>
<p>Improved <a href="commands/ListView.htm#ItemChanged">ListView's item-changed notification (&quot;I&quot;)</a> to indicate via ErrorLevel whether the item has been selected/deselected, focused/unfocused, and/or checked/unchecked. [thanks foom]</p>
<p>Added an additional layer of protection to <a href="Scripts.htm#ahk2exe">compiled scripts</a>. It is recommended that scripts containing sensitive data or source code be recompiled with the <a href="Scripts.htm#ahk2exeCmd">/NoDecompile switch</a>.</p>
<h2 id="v1.0.46.09">1.0.46.09 - March 4, 2007</h2>
<p>Fixed <code><a href="commands/SetExpression.htm">:=</a></code> deep inside expressions when used to assign the result of a recursive <a href="Functions.htm">function</a> to a <a href="Functions.htm#Locals">local variable</a> (broken by 1.0.46.06). [thanks Laszlo]</p>
<p>Fixed inability to pass certain <a href="Variables.htm#ternary">ternary expressions</a> to <a href="Functions.htm#ByRef">ByRef parameters</a>. [thanks Titan]</p>
<p>Fixed <code><a href="commands/GuiControlGet.htm">GuiControlGet</a>, OutputVar, Pos</code> so that it doesn't make the OutputVar blank. [thanks PhiLho]</p>
<p>Changed and fixed continuation sections so that the <a href="Scripts.htm#CommentOption">&quot;Comment&quot; option</a> doesn't force the <a href="Scripts.htm#LTrim">LTrim option</a> into effect. [thanks Titan]</p>
<p>Changed the <a href="http://msdn2.microsoft.com/en-us/library/01cfys9z.aspx">Terminal Server Awareness flag</a> back to &quot;disabled&quot; on AutoHotkey.exe and compiled scripts. This improves flexibility and backward compatibility (see <a href="http://www.autohotkey.com/forum/topic16041.html">discussion</a> at forum).</p>
<h2 id="v1.0.46.08">1.0.46.08 - February 7, 2007</h2>
<p>Fixed unreliability of <a href="Variables.htm#ComSpec">ComSpec</a> and <a href="Variables.htm#env">environment variables</a> on Windows 9x (broken by v1.0.46.07). [thanks Loriss]</p>
<p>Changed: When AutoHotkey.exe is launched without a script specified, it will now run (or prompt you to create) the file AutoHotkey.ahk in the <a href="Variables.htm#MyDocuments">My Documents</a> folder. The only exception is when AutoHotkey.ini exists in the working directory, in which case it uses the old behavior of executing that file.</p>
<p>Improved <a href="commands/DllCall.htm">DllCall</a> to support an integer in place of the function name, which is interpreted as the address of the function to call. [thanks Sean]</p>
<h2 id="v1.0.46.07">1.0.46.07 - January 23, 2007</h2>
<p>Fixed crash of illegally-named <a href="misc/Arrays.htm">dynamic variables</a> on the left of an equal-sign assignment (broken by v1.0.45). [thanks PhiLho]</p>
<p>Fixed <a href="commands/FileMoveDir.htm">FileMoveDir</a>'s &quot;Option 2&quot; to work properly even when the directory is being both renamed and moved. [thanks bugmenot]</p>
<p>Fixed inability to pass a variable <a href="Functions.htm#ByRef">ByRef</a> if that same expression changed it from empty to non-empty (when <a href="commands/_NoEnv.htm">#NoEnv</a> is absent). [thanks Joy2DWorld]</p>
<p>Changed DllCall's <a href="commands/DllCall.htm#LastError">A_LastError</a> to reflect only changes made by the script, not by AutoHotkey itself. [thanks Azerty]</p>
<h2 id="v1.0.46.06">1.0.46.06 - January 16, 2007</h2>
<p>Applied minor fixes and improvements to <a href="misc/RegEx-QuickRef.htm">regular expressions</a> by upgrading from PCRE 6.7 to 7.0. One of the most notable improvements is the `a option, which recognizes any type of newline (namely `r, `n, or `r`n). Similarly, the \R escape sequence means &quot;any single newline of any type&quot;. See also: <a href="http://www.pcre.org/changelog.txt">Full PCRE changelog</a></p>
<p>Changed and fixed all <a href="commands/Control.htm">Control commands</a> and <a href="commands/StatusBarWait.htm">StatusBarWait</a> to obey <a href="commands/SetTitleMatchMode.htm#RegEx">SetTitleMatchMode RegEx</a> as documented.</p>
<p>Changed <a href="commands/RegExReplace.htm">RegExReplace()</a> to return the original/unaltered string rather than &quot;&quot; when an error occurs.</p>
<p>Changed: Enabled the <a href="http://msdn2.microsoft.com/en-us/library/01cfys9z.aspx">Terminal Server Awareness flag</a> on AutoHotkey.exe and <a href="Scripts.htm#ahk2exe">compiled scripts</a>.</p>
<p>Improved performance when <a href="Variables.htm#AssignOp">assigning</a> large strings returned from <a href="Functions.htm">user-defined functions</a>. [thanks Laszlo]</p>
<h2 id="v1.0.46.05">1.0.46.05 - January 4, 2007</h2>
<p>Fixed the <a href="commands/Input.htm">Input command</a> to allow named end keys like {F9} to work even when the shift key is being held down (broken by v1.0.45). [thanks Halweg]</p>
<p>Fixed inability of &quot;<a href="commands/Gui.htm#Show">Gui Show</a>&quot; to focus the GUI window when the tray menu is used both to reload the script and to show the GUI window. [thanks Rnon]</p>
<p>Fixed inability to pass some types of <a href="Variables.htm#AssignOp">assignments (:=)</a> to a <a href="Functions.htm#ByRef">ByRef</a> parameter. [thanks Laszlo]</p>
<h2 id="v1.0.46.04">1.0.46.04 - January 2, 2007</h2>
<p>Fixed inability to pass the result of an <a href="Variables.htm#AssignOp">assignment (:=)</a> to a <a href="Functions.htm#ByRef">ByRef</a> parameter. [thanks Titan]</p>
<h2 id="v1.0.46.03">1.0.46.03 - December 18, 2006</h2>
<p>Fixed <a href="commands/ListView.htm">ListView</a>'s floating point sorting to produce the correct ordering. [thanks oldbrother/Goyyah/Laszlo]</p>
<h2 id="v1.0.46.02">1.0.46.02 - December 17, 2006</h2>
<p>Fixed <a href="Variables.htm#env">environment variables</a> to work properly as input variables in various commands such as <a href="commands/StringLen.htm">StringLen</a> and <a href="commands/StringReplace.htm">StringReplace</a> (broken by 1.0.44.14). [thanks Camarade_Tux]</p>
<h2 id="v1.0.46.01">1.0.46.01 - December 15, 2006</h2>
<p><strong>NOTE:</strong> Although this release has been extensively tested, several low-level enhancements were made. If you have any mission-critical scripts, it is recommended that you retest them and/or wait a few weeks for any bugs to get fixed.</p>
<p>Fixed comma-separated <a href="Functions.htm#DeclareInit">declaration initializers</a> such as <code>local x = 1, y = 2</code> to work even when immediately below an if/else/loop statement.</p>
<p>Fixed <a href="Variables.htm#comma">comma-separated expressions</a> so when the leftmost item is an assignment, it will occur before the others rather than after. [thanks Laszlo]</p>
<p>Changed and fixed <a href="Functions.htm">function-calls</a> so that any changes they make to <a href="Variables.htm#ref">dynamic variable names</a>, <a href="Variables.htm#env">environment variables</a>, and <a href="Variables.htm#BuiltIn">built-in variables</a> (such as <a href="misc/Clipboard.htm">Clipboard</a>) are always visible to subsequent parts of the expression that called them.</p>
<p>Changed: When a <a href="Variables.htm#comma">multi-statement comma</a> is followed immediately by a variable and an equal sign, that equal sign is automatically treated as a <a href="commands/SetExpression.htm">:= assignment</a>. For example, all of the following are assignments: <code>x:=1, y=2, a=b=c</code>.</p>
<p>Changed <a href="Variables.htm#comma">comma-separated expressions</a> to produce the following effects: 1) the leftmost <strong>/=</strong> operator becomes <a href="Variables.htm#divide">true divide</a> rather than <a href="commands/EnvDiv.htm">EnvDiv</a>; 2) blank values are not treated as zero in math expressions (thus they yield blank results).</p>
<p>Improved the performance of <a href="Variables.htm#Expressions">expressions</a> by 5 to 20% (depending on type).</p>
<p>Improved the <a href="Variables.htm#AssignOp">new assignment operators such as <strong>.=</strong></a> to support the <a href="misc/Clipboard.htm">Clipboard variable</a> (even in <a href="Variables.htm#comma">comma-separated expressions</a>).</p>
<p>Improved the <a href="Variables.htm#AssignOp"><strong>.=</strong> operator</a> so that it doesn't require a space to its left.</p>
<p>Improved GUI controls to accept <a href="Functions.htm#static">static variables</a> as their <a href="commands/Gui.htm#var">associated variables</a> (formerly only globals were allowed).</p>
<p>Added option <a href="commands/Gui.htm#HwndOutputVar">HwndOutputVar</a> to <code>Gui Add</code>, which stores a control's HWND in OutputVar. [thanks Corrupt &amp; Toralf]</p>
<h2 id="v1.0.46.00">1.0.46 - November 29, 2006</h2>
<p><strong>NOTE:</strong> Although this release has been extensively tested and is not expected to break any existing scripts, several low-level enhancements were made. If you have any mission-critical scripts, it is recommended that you retest them and/or wait a few weeks for any bugs to get fixed.</p>
<p>Added function <a href="commands/SubStr.htm">SubStr()</a>, which retrieves the specified number of characters at the specified position in a string.</p>
<p>Added assignment operators <a href="Variables.htm#AssignOp">//=, <strong>.</strong>=, |=, &amp;=, ^=, &gt;&gt;=, and &lt;&lt;=</a>, which can be used anywhere in expressions. For example, <code>Var .= &quot;abc&quot;</code> appends the string &quot;abc&quot; to <em>Var</em>'s current contents.</p>
<p>Added full support in expressions for the operators <a href="Variables.htm#AssignOp">:=, ++, --, +=, -=, *=, and /=</a> (formerly, they could be used only as the leftmost operator on a line). All <a href="Variables.htm#AssignOp">assignment operators</a> (especially <a href="Variables.htm#IncDec">++ and --</a>) behave in a C-like way when their result is used by some other operator.</p>
<p>Added the <a href="Variables.htm#ternary">ternary operator (?:)</a>, which is a shorthand replacement for the <a href="commands/IfExpression.htm">if-else statement</a>. For example, <code>var := x&gt;y ? 2 : 3</code> assigns the value 2 if x is greater than y; otherwise it assigns 3.</p>
<p>Added support for <a href="Variables.htm#comma">comma-separated expressions</a>, which allow a single line to contain multiple assignments, function calls, and other expressions. [thanks PhiLho &amp; Titan]</p>
<p>Improved <a href="Functions.htm#DeclareInit">variable declarations</a> to support initialization on the same line. Note: A <a href="Functions.htm#static">static variable</a>'s initialization occurs only once, before the script begins executing.</p>
<p>Improved <a href="Scripts.htm#continuation">line continuation</a> to support all expression operators. For example, a line that starts with &quot;?&quot; or &quot;+&quot; is automatically appended to the line above it.</p>
<p>Improved performance of operators <a href="Variables.htm#concat">&quot;<strong>.</strong>&quot;</a> and <a href="Variables.htm#concat">&quot;<strong>.=</strong>&quot;</a> to be as fast as the percent-sign method of appending a string.</p>
<p>Improved expressions to allow more types of <a href="Variables.htm#unary">consecutive unary operators</a> such as <strong>!!</strong>Var. [thanks Laszlo]</p>
<p>Changed <a href="commands/Critical.htm">Critical</a> to check messages less often (20 vs. 10ms), which improves the reliability of frequently-called <a href="commands/OnMessage.htm">OnMessage functions</a>. [thanks Majkinetor]</p>
<p>Changed: A variable named simply &quot;?&quot; is no longer valid in expressions due to the new <a href="Variables.htm#ternary">ternary operator</a>.</p>
<p>Fixed <a href="Hotkeys.htm">hotkeys</a> to support <code>:::</code> (colon as a hotkey) and <code>: &amp; x</code> (colon as a <a href="Hotkeys.htm#combo">hotkey prefix</a>).</p>
<p>Fixed the installer to remove psapi.dll from the AutoHotkey folder (except on Windows NT4). This avoids a conflict with Internet Explorer 7. [thanks to all who reported it]</p>
<h2 id="v1.0.45.04">1.0.45.04 - November 15, 2006</h2>
<p>Fixed crash on Windows 9x when a script doesn't actually run (e.g. due to syntax error) (broken by v1.0.45). [thanks rogerg]</p>
<p>Changed <code><a href="commands/Control.htm">Control Style|ExStyle</a></code> to report ErrorLevel 0 vs. 1 when the requested style change wasn't necessary because it was already in effect.</p>
<p>Improved <a href="commands/_Include.htm">#Include</a> to support <a href="Variables.htm#AppData">%A_AppData%</a> and <a href="Variables.htm#AppDataCommon">%A_AppDataCommon%</a>. [thanks Tekl]</p>
<h2 id="v1.0.45.03">1.0.45.03 - November 12, 2006</h2>
<p>Fixed <a href="commands/LoopFile.htm">file-pattern loops</a> not to crash when recursing into paths longer than 259 characters. In addition, such paths and files are now ignored (skipped over) by file-pattern loops, <a href="commands/FileSetAttrib.htm">FileSetAttrib</a>, and <a href="commands/FileSetTime.htm">FileSetTime</a>. [thanks PhilR]</p>
<p>Fixed <a href="Functions.htm">functions</a> that call themselves and assign the result to one of their own <a href="Functions.htm#Locals">locals</a> (broken by v1.0.45). [thanks bjennings]</p>
<p>Fixed crash of scripts containing <a href="misc/RegEx-QuickRef.htm">regular expressions</a> that have compile errors. [thanks PhiLho]</p>
<p>Fixed <a href="commands/GuiControl.htm">GuiControl</a> not to convert <a href="commands/GuiControls.htm#Checkbox">checkboxes</a> into 3-state unless requested. [thanks JBensimon]</p>
<p>Changed <a href="commands/URLDownloadToFile.htm">UrlDownloadToFile</a> to announce a user-agent of &quot;AutoHotkey&quot; to the server rather than a blank string. [thanks jaco0646]</p>
<p>Improved <a href="Scripts.htm#continuation">continuation sections</a> to support semicolon comments inside the section via the option-word <em>Comments</em>.</p>
<h2 id="v1.0.45.02">1.0.45.02 - November 8, 2006</h2>
<p>Fixed <a href="commands/StringLower.htm">StringUpper</a> and <a href="commands/StringLower.htm">StringLower</a> to work when OutputVar is the clipboard (broken by v1.0.45). [thanks songsoverruins]</p>
<p>Fixed the hotkeys ~Alt, ~Control, and ~Shift to fire upon press-down rather than release (broken by v1.0.44).<br>
Background: Without the tilde, Alt/Control/Shift fire upon release to avoid taking over both the left and right key. But a specific left/right hotkey like LAlt or RShift fires upon press-down.</p>
<h2 id="v1.0.45.01">1.0.45.01 - November 7, 2006</h2>
<p>Fixed <a href="commands/FileReadLine.htm">FileReadLine</a> and <a href="commands/FileSelectFile.htm">FileSelectFile</a> not to crash or misbehave when other <a href="misc/Threads.htm">threads</a> interrupt them (broken by v1.0.45). [thanks toralf]</p>
<p>Fixed <a href="commands/RegExMatch.htm">RegExMatch()</a> so that when there's no match, named subpatterns are properly set to &quot;&quot; in the output array. [thanks PhiLho]</p>
<p>Fixed <a href="commands/RegExMatch.htm">RegExMatch()</a>'s &quot;J&quot; option to properly write duplicate named subpatterns to the output array. [thanks PhiLho]</p>
<p>Changed <a href="commands/SetWorkingDir.htm">SetWorkingDir</a> and <a href="commands/_Include.htm">#Include DirName</a> to succeed even for a root directory such as C: that lacks a backslash.</p>
<p>Improved <a href="commands/DllCall.htm">DllCall()</a> to display a warning dialog if the called function writes to a variable of zero capacity.</p>
<h2 id="v1.0.45.00">1.0.45 - November 4, 2006</h2>
<p><strong>NOTE:</strong> Although this release has been extensively tested and is not expected to break any existing scripts, several low-level performance enhancements were made. If you have any mission-critical scripts, it is recommended that you retest them and/or wait a few weeks for any bugs to get fixed.</p>
<p>Added support for <a href="misc/RegEx-QuickRef.htm">regular expressions</a> via <a href="commands/RegExMatch.htm">RegExMatch()</a>, <a href="commands/RegExReplace.htm">RegExReplace()</a>, and <a href="commands/SetTitleMatchMode.htm#RegEx">SetTitleMatchMode RegEx</a>. [thanks Philip Hazel &amp; PhiLho]</p>
<p>Improved performance and memory utilization of <a href="commands/StringReplace.htm">StringReplace</a>.</p>
<p>Improved performance of the <a href="commands/SetExpression.htm">:= operator</a> for expressions and functions involving long strings.</p>
<p>Improved <a href="commands/ControlClick.htm">ControlClick</a> with a new option &quot;NA&quot; that avoids activating the target window (this mode also improves reliability in some cases). In addition, it's been documented that <a href="commands/SetControlDelay.htm">SetControlDelay -1</a> can improve the reliability of ControlClick in some cases. [thanks nnesori]</p>
<p>Changed <a href="commands/GuiControls.htm#Button">GUI buttons</a> to default to <a href="commands/Gui.htm#Wrap">&quot;no word-wrap&quot;</a> when no width, height, or CR/LF characters were specified. This may solve button display issues under some desktop themes.</p>
<p>Fixed &quot;<a href="commands/Transform.htm#HTML">Transform HTML</a>&quot; for the following characters: &amp;`n&gt;&lt;</p>
<p>Fixed misinterpretation of lines starting with &quot;if not is&quot; such as &quot;if not <strong>Is</strong>Done&quot;.</p>
<p>Fixed inability of &quot;<a href="commands/Gui.htm#Show">Gui Show</a>&quot; to move a window vertically downward to where its bottommost row of pixels is now.</p>
<p>Fixed inability to use <a href="commands/GroupActivate.htm">GroupActivate</a> as the only line beneath an IF or ELSE.</p>
<p>Fixed inability of the <a href="commands/Input.htm">Input command</a> to differentiate between end-keys enclosed in braces and their (un)shifted counterparts; e.g. '{' vs. '['. [thanks Laszlo]</p>

<p>Visit <a href="http://www.autohotkey.com/changelog/">www.autohotkey.com/changelog/</a> for even older changes.</p>
</body>
</html>
